package com.ruoyi.stat.evaluate.service.impl;

import java.util.Map;

import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.common.tools.utils.DateUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.stat.evaluate.domain.EvaluateStat;
import com.ruoyi.stat.evaluate.domain.bo.EvaluateStatBo;
import com.ruoyi.stat.evaluate.mapper.EvaluateStatMapper;
import com.ruoyi.stat.evaluate.service.IEvaluateStatService;

import lombok.RequiredArgsConstructor;

/**
 * 市环境测评数据统计汇总Service业务层处理
 *
 * @author cc
 * @date 2023-04-28
 */
@RequiredArgsConstructor
@Service
public class EvaluateStatServiceImpl implements IEvaluateStatService {

    private final EvaluateStatMapper baseMapper;

//    /**
//     * 查询市环境测评数据统计汇总
//     */
//    @Override
//    public EvaluateStatVo queryById(Date queryTime){
//        return baseMapper.selectVoById(queryTime);
//    }
//
//    /**
//     * 查询市环境测评数据统计汇总列表
//     */
//    @Override
//    public TableDataInfo<EvaluateStatVo> queryPageList(EvaluateStatBo bo, PageQuery pageQuery) {
//        LambdaQueryWrapper<EvaluateStat> lqw = buildQueryWrapper(bo);
//        Page<EvaluateStatVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
//        return TableDataInfo.build(result);
//    }
//
//    /**
//     * 查询市环境测评数据统计汇总列表
//     */
//    @Override
//    public List<EvaluateStatVo> queryList(EvaluateStatBo bo) {
//        LambdaQueryWrapper<EvaluateStat> lqw = buildQueryWrapper(bo);
//        return baseMapper.selectVoList(lqw);
//    }

    private LambdaQueryWrapper<EvaluateStat> buildQueryWrapper(EvaluateStatBo bo) {
        Map<String, Object> params = bo.getParams();
        LambdaQueryWrapper<EvaluateStat> lqw = Wrappers.lambdaQuery();
        lqw.eq(bo.getQueryTime() != null, EvaluateStat::getQueryTime, bo.getQueryTime());
        lqw.eq(bo.getServiceType() != null, EvaluateStat::getServiceType, bo.getServiceType());
        lqw.eq(StringUtils.isNotBlank(bo.getServiceTypeName()), EvaluateStat::getServiceTypeName, bo.getServiceTypeName());
        lqw.eq(bo.getYear() != null, EvaluateStat::getYear, bo.getYear());
        lqw.eq(bo.getMonth() != null, EvaluateStat::getMonth, bo.getMonth());
        lqw.eq(bo.getDay() != null, EvaluateStat::getDay, bo.getDay());
        return lqw;
    }

	@Override
	public int createStatData(String startTime , String endTime) {
		if (StringUtils.isEmpty(startTime)) {
			startTime = DateUtils.getCurrDate();
		}
		if (StringUtils.isEmpty(endTime)) {
			endTime = DateUtils.getCurrDate();
		}
		LambdaQueryWrapper<EvaluateStat> lqw = Wrappers.lambdaQuery();
		lqw.ge(EvaluateStat::getQueryTime, startTime);
		lqw.le(EvaluateStat::getQueryTime, endTime);
		this.baseMapper.delete(lqw);
		return this.baseMapper.createStatDate(startTime , endTime);
	}

//    /**
//     * 新增市环境测评数据统计汇总
//     */
//    @Override
//    public Boolean insertByBo(EvaluateStatBo bo) {
//        EvaluateStat add = BeanUtil.toBean(bo, EvaluateStat.class);
//        validEntityBeforeSave(add);
//        boolean flag = baseMapper.insert(add) > 0;
//        if (flag) {
//            bo.setQueryTime(add.getQueryTime());
//        }
//        return flag;
//    }
//
//    /**
//     * 修改市环境测评数据统计汇总
//     */
//    @Override
//    public Boolean updateByBo(EvaluateStatBo bo) {
//        EvaluateStat update = BeanUtil.toBean(bo, EvaluateStat.class);
//        validEntityBeforeSave(update);
//        return baseMapper.updateById(update) > 0;
//    }
//
//    /**
//     * 保存前的数据校验
//     */
//    private void validEntityBeforeSave(EvaluateStat entity){
//        //TODO 做一些数据校验,如唯一约束
//    }
//
//    /**
//     * 批量删除市环境测评数据统计汇总
//     */
//    @Override
//    public Boolean deleteWithValidByIds(Collection<Date> ids, Boolean isValid) {
//        if(isValid){
//            //TODO 做一些业务上的校验,判断是否需要校验
//        }
//        return baseMapper.deleteBatchIds(ids) > 0;
//    }
}
